"""
Generic Logger Package
通用日志记录工具包

A comprehensive logging solution with:
功能特性:
- Flexible log rotation (size/time based) 灵活的日志轮转(基于大小/时间)
- Asynchronous logging support 支持异步日志记录
- Customizable handlers 可自定义的处理器
- Thread-safe implementation 线程安全实现

预设配置:
- 'dev': 开发环境配置(控制台+文件输出)
- 'prod': 生产环境配置(仅文件输出)
- 'file_only': 仅文件输出配置(无控制台输出)
"""

from .core import setup_logger
from .manager import LoggerManager
from .handlers import CustomRotatingFileHandler, CustomTimedRotatingFileHandler

# 创建全局LoggerManager实例
_logger_manager = LoggerManager()

def get_logger(name=None, preset=None, base_dir=None, **kwargs):
    """
    Get a logger instance with the specified configuration
    获取配置好的日志记录器实例

    Args:
        name (str): Logger name. If None, returns root logger.
            日志记录器名称，如果为None则返回根记录器
        preset (str): Preset configuration name ('dev', 'prod', 'file_only', etc.)
            预设配置名称 ('dev', 'prod', 'file_only'等)
        base_dir (str): Base directory for log files. Default is 'logs'.
            日志文件的基本目录。默认为'logs'。
        **kwargs: Configuration options including:
            配置选项包括:
            - level: Logging level (DEBUG/INFO/WARNING/ERROR/CRITICAL)
               日志级别(DEBUG/INFO/WARNING/ERROR/CRITICAL)
            - log_format: Log message format
               日志格式
            - log_file: Output file path (required for file handlers)
               输出文件路径(文件处理器必需)
            - max_bytes: Max file size for rotation (in bytes)
               日志文件最大字节数(用于大小轮转)
            - backup_count: Number of backup files to keep
               保留的备份文件数量
            - when: Time rotation interval (S/M/H/D, default 'D')
               时间轮转间隔(S秒/M分/H时/D天, 默认'D')
            - backup_when: Time rotation backup days
               时间轮转备份天数
            - handler_type: Handler type ('size', 'time', 'both')
               处理器类型('size'大小轮转, 'time'时间轮转, 'both'混合)
            - console: Whether to output to console
               是否输出到控制台
            - share_file: Whether to share file handler between loggers
               是否在多个记录器间共享文件处理器
            - use_async: Whether to use asynchronous logging
               是否使用异步日志记录
            - buffer_size: Memory buffer size for async logging
               异步日志的内存缓冲区大小

    Returns:
        Configured logger instance
        配置好的日志记录器实例

    Example:
        # 获取默认配置的记录器
        logger = get_logger('my_module')

        # 使用预设配置
        logger = get_logger('my_module', preset='dev')

        # 自定义日志目录
        logger = get_logger('my_module', base_dir='custom_logs')

        # 获取自定义配置的记录器
        logger = get_logger('custom',
                          level='DEBUG',
                          log_file='app.log',
                          max_bytes=1048576,
                          backup_count=5)
    """
    return _logger_manager.get_logger(name=name, config=kwargs, preset=preset, base_dir=base_dir)

# 暴露其他重要类和函数
__all__ = [
    'get_logger',
    'LoggerManager',
    'setup_logger',
    'CustomRotatingFileHandler',
    'CustomTimedRotatingFileHandler'
]